package com.evil.kingdom.service.action;

import com.evil.kingdom.pojo.entity.action.RoutePosition;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;

import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

/**
 * 坐标服务
 *
 * @author liyang
 * @date 2024-05-24 09:24
 */
public interface PositionService {

    /**
     * 计算最短路线
     *
     * @param routes 地图所有路径点
     * @param depart 出发点
     * @param dest   目的点
     * @return 路径点列表
     */
    List<String> calShortest(@NotEmpty(message = "地图所有路径点不能为空") Collection<RoutePosition> routes,
                             @NotNull(message = "出发点不能为空") String depart,
                             @NotNull(message = "目的点不能为空") String dest);

    /**
     * 出征
     *
     * @param routes routes
     * @param depart depart
     * @param dest   dest
     * @return 出征路线
     */
    LinkedList<RoutePosition> warfare(@NotEmpty(message = "地图所有路径点不能为空") Collection<RoutePosition> routes,
                                      @NotNull(message = "出发点不能为空") String depart,
                                      @NotNull(message = "目的点不能为空") String dest);
}
